package com.questionnaires.service;

import com.questionnaires.exception.EmptyListException;
import com.questionnaires.exception.NotExistsException;
import com.questionnaires.model.Category;
import com.questionnaires.model.Questionnaire;
import com.questionnaires.model.User;
import com.questionnaires.repository.QuestionnaireRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @author adriana.calina.oros@gmail.com
 */
@Service(value = "questionnaireService")
public class QuestionnaireServiceImpl implements QuestionnaireService {

    @Autowired
    private QuestionnaireRepository questionnaireRepository;

    /**
     * {@inheritDoc}
     */
    public long saveOrUpdate(Questionnaire questionnaire) {
        return questionnaireRepository.saveOrUpdate(questionnaire);
    }

    /**
     * {@inheritDoc}
     */
    public void delete(long id) throws NotExistsException {
        questionnaireRepository.delete(id);
    }

    /**
     * {@inheritDoc}
     */
    public List<Questionnaire> getAll() {
        return questionnaireRepository.getAll();
    }

    /**
     * {@inheritDoc}
     */
    public List<Questionnaire> findActiveQuestionnairesByCategory(Category category) throws EmptyListException {
        return questionnaireRepository.findActiveQuestionnairesByCategory(category);
    }

    /**
     * {@inheritDoc}
     */
    public List<Questionnaire> findByManager(User manager) throws EmptyListException {
        return questionnaireRepository.findByManager(manager);
    }

    @Override
    public void setInactive(long id) throws NotExistsException{
        questionnaireRepository.setInactive(id);
    }

    @Override
    public Questionnaire findById(long id) {

        return questionnaireRepository.findById(id);
    }
}
